package com.gopay.remote.bank.cbrmb;

import com.gopay.common.domain.cbrmb.internationalcard.masapay.MasaPayBankDTOReq;
import com.gopay.common.domain.cbrmb.internationalcard.masapay.MasaPayBankDTOResp;
import com.gopay.common.domain.cbrmb.internationalcard.masapay.MasaPayEnrolmentCheckDTOReq;
import com.gopay.common.domain.cbrmb.internationalcard.masapay.MasaPayEnrolmentCheckDTOResp;
import com.gopay.common.domain.cbrmb.internationalcard.masapay.MasaPayOrderDTOReq;
import com.gopay.common.domain.cbrmb.internationalcard.masapay.MasaPayOrderDTOResp;
import com.gopay.common.domain.cbrmb.internationalcard.masapay.MasaPayPayerAuthValidateReq;
import com.gopay.common.domain.cbrmb.internationalcard.masapay.MasaPayPayerAuthValidateResp;
import com.gopay.common.domain.cbrmb.internationalcard.masapay.MasaPayQueryOrderDTOReq;
import com.gopay.common.domain.cbrmb.internationalcard.masapay.MasaPayQueryOrderDTOResp;
import com.gopay.common.domain.cbrmb.internationalcard.masapay.MasaPayQueryRefundOrderDTOReq;
import com.gopay.common.domain.cbrmb.internationalcard.masapay.MasaPayQueryRefundOrderDTOResp;
import com.gopay.common.domain.cbrmb.internationalcard.masapay.MasaPayUploadExpressListDTO;
import com.gopay.common.domain.cbrmb.internationalcard.masapay.MasaPayUploadExpressListResDTO;
import com.gopay.common.domain.cbrmb.internationalcard.masapay.RefundReqDTO;
import com.gopay.common.domain.cbrmb.internationalcard.masapay.RefundResDTO;
import com.gopay.common.exception.GopayException;

/**
 * 
 * @ClassName: MasaPayRemoteService
 * @Description: masapay interface
 * @author gd.cui
 * @date 2017年10月25日 下午1:51:02
 */
public interface MasaPayRemoteService {

	/**
	 * pay order to masapay
	 * 
	 * @Description:
	 * @param req
	 * @return
	 * @throws GopayException
	 * @author gd.cui
	 */
	public MasaPayOrderDTOResp payOrder(MasaPayOrderDTOReq req) throws GopayException;

	/**
	 * refund order
	 * 
	 * @Description:
	 * @param refundReqDTO
	 * @return
	 * @throws GopayException
	 * @author gd.cui
	 */
	public RefundResDTO refundOrder(RefundReqDTO refundReqDTO) throws GopayException;

	/**
	 * query order
	 * 
	 * @Description:
	 * @param req
	 * @return
	 * @throws GopayException
	 * @author gd.cui
	 */
	public MasaPayQueryOrderDTOResp queryOrder(MasaPayQueryOrderDTOReq req) throws GopayException;

	/**
	 * 乾汇上传运单接口
	 * 
	 * @param req
	 * @return
	 * @throws GopayException
	 */
	public MasaPayUploadExpressListResDTO uploadExpress(MasaPayUploadExpressListDTO req) throws GopayException;

	/**
	 * refund query
	 * 
	 * @Description:
	 * @param req
	 * @return
	 * @throws GopayException
	 * @author gd.cui
	 */
	public MasaPayQueryRefundOrderDTOResp queryRefundOrder(MasaPayQueryRefundOrderDTOReq req) throws GopayException;

	/**
	 * 
	 * 
	 * @Description:
	 * @param req
	 * @return
	 * @throws GopayException
	 * @author gd.cui
	 */
	public MasaPayEnrolmentCheckDTOResp enrolmentCheck(MasaPayEnrolmentCheckDTOReq req) throws GopayException;

	/**
	 * 
	 * 
	 * @Description:
	 * @param req
	 * @return
	 * @throws GopayException
	 * @author gd.cui
	 */
	public MasaPayBankDTOResp authenticationPayer(MasaPayBankDTOReq req) throws GopayException;

	/**
	 * 
	 * 
	 * @Description:
	 * @param req
	 * @return
	 * @throws GopayException
	 * @author gd.cui
	 */
	public MasaPayPayerAuthValidateResp payerAuthValidate(MasaPayPayerAuthValidateReq req) throws GopayException;
}
